C++实参前加运算符"&"的问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 23:47:49
在DX中有好多这样的函数:形参声明为指针,调用时却传个(&实参)给它.分析后感觉不是引用传递.到底是什么意思? 例:
HRESULT IDirect3DDevice9::Reset(类型1 *变量) //声明指针型形参
///////函数调用
IDirect3DDevice9* g_pD3DV;
类型1 d3dpp ; //实例化类型1(非指针)
g_pD3DV->Reset(&d3dpp);注意形参声明为指针,而d3dpp并不是类型1的指针,是因此才要在参数前加(&)符号吗?是不是取地址运算?总结几个函数后发现形参指向的类型1都是结构体,是不是只有结构体和数组类型取地址后,可以和指针互换?还是其它类型也能这样用?像这样:
void sex(int* x); //声明,形参是指针
//调用
int y=3;
int* a=&y;
sex(a); //这样是可以的
sex(&y);//这样用也行???
形参非指针时就不能用(&实参)这种形式传递的吧??问题多,还是小白级~!请大家教下,谢谢
也就是说要看形参声明为指针才有这样用法吗?

&是取地址符,&y是取得y的地址,传递的是指针。
形参声明为指针才有这样用法吗?是的,形参不是指针,你怎么可能传指针给它,那样编译是通不过的。

形参是指针,如果实参是指针,写名字即可。
如果实参是变量,就要用地址,也就是加&运算。